@L|}6CD l0C)HCC WhL/h `CmCDiD`  R@W1  Y0@R !L` D  C D     )16CS S)  C)D1 p p 0 C9DI pCDL~CiCDiD` D  C D     )16CS S)  C)D1 p p }0 C9DI pCDL~CiCDiD` DD˙` d J)L !}D L(( LL()  L| L( S LH 0p n  } CY?  q  L L  ` )} `A! d߰")-݆ "  $G@LLL&0") $G% }H0 3S8`G ȱG ȱG   Gȭ Gȭ GG}GHiH8(()) G$H% `(0 })8` d)L ݆ & LGȘ ݆LL d  ! LL d)N>Q  HH) }  hyhyB q L> Lm JJ  Ln*` dB%' }8  H H` 1 { LL   !L     Hh SY?  q  1L }  !? S   q 1 L   Ll  Lg E`L   !L)  q 1L}) `L0AM݊L݉ ML  N݆LLLNLMLHG!@}1F GȱGLLEEȩÑEȑEEȑE Ed E7EȩE  q} L !,0,0SGɛ L 1 !L EHEh W G gLLSROTCES EERF } G) *Gȩ GȽG GȌd q q G`  8   0G  `D}CEDC0X:Ȣ Y ȱC* ? 0.. , 0%n ?A[ 0 : L`L  `, 0`Y}`piH n0)բY? 08`0 }  0$L GGȽG L `8L`L}8`  05G)݁,G)ȱGȱGHh0})Hh` B! 8`8iiiLE`}E8FEh( l0`ɃLL L8^~jj8jHi hEEEiEȱEiE` dTE} H8EEȱEEȩEh J E8   . m  i`LI!)E1FR}1LJ舩9GIH`LJJ`HGHh l`} S gL   8 rii `дCDCG W  }C  Lq` X٨`DOS SYS IIIIIIIIIIIIIIIC`0 ߩ0}}} HE |||DDOS DOSDOS SYS }}}}}}CDOS SYS} 0`BDELV !B }`LVUQ   ]   TU J ]L!T  #      TU  } L ? .  t`GBJ V~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI   0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DELV䌚 !B y`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J V (` 9 V⪍ ઍ  -'}LLu DEHILV 9 .l 9 .l  `` s$B VBH(}I|DE V BLV nB,DE J V* \*` B V BLVDEHI BLVL)}1u H232435; 1 ;  hh@2 e1i1LHҍ 00) 08 109hh@ Ҡ2e*}1i1232435ޥ<<81} 3E:}DISK OPERATING SYSTEM II VERSION 2.0SCOPYRIGHT 1980 ATARIA. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDGE J. D,}UPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRESSF. LOCK F-}ILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES9!&x#!7&p))'&X*./)L''-؆莟.}R'S  vW DEHHI 1A#! @ ~0ɛ8A0.) ȅ 1 1i/}il ! 1L NO SUCH ITEMSELECT ITEM OR FOR MENU! 0 .{z:*{}.|~ 1 0 00}JB 18L^%|DLl%DIRECTORY--SEARCH SPEC,LIST FILE? # 0 0 n&|D! 1L NOT A DISK FILE1}N !B 1L " 1 !BDED:}:1BJ|DE 1DEBH2}I 1 h0ߢ 0.  0?詛 1 ~0YЛ 1 "L<" "L 3} BL1TYPE "Y" TO DELETE...DELETE FILE SPECCOPY--FROM, TO?OPTION NOT ALLOWED305 FREE SECTORS COPYING---D1:RAYG4}UN.SND# 0|D .L$A#B#C#JB|DE 1BHIDD#E 1D#0: B5} 1L B#C#C#B# B 1N#$0SYS1}:e#D# d# D# .d#ȽD# d# 𩛙d#X# 1,A#6}PdD#ELO- A.BJdD#E 1 1HH 0hh|DL^%1}:e# Lt% e#dD#EL%7} 1 0 . .0% 1L WILD CARDS NOT ALLOWED IN DESTINATION 0 A.|K@C}//3Hu ξL/L DRIVE TO WRITE DOS FILES TO?WRITING NEW DOS FILESTYPE "Y" TO WRITE DOS TO DRIVE 1.?}D1:DOS.SYSERROR - NOT VERSION 2 FORMAT. , &* բ( 1L `[) 0NΞ 0 L1M) 1@} L BAD LOAD FILELOAD FROM WHAT FILE?) 0 0#B 1L WHAT FILE TO LOCK?) 0 0$B 1L WHAT FILE TO UNLOCK?DUA}P DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO USE PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV. h  ,B}  `)  <0 2 2 0  ,   ,,ޢ* 1L ,K* 1 ~0 0C}FINSERT BOTH DISKS, TYPE RETURNERROR - DRIVES INCOMPATIBLE., 1 ~038  , 1L D}, &*  Lz+, 0 , 1 ~0 + Y,0!,0 ,L+ ,mm  v,"ǭE}0Ξ, 05,Lt+L +,Hh` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNF}INSERT DESTINATION DISK,TYPE RETURN`    `L,8,0( rG}L1(`ߢ) 1* 1 ~0Y`hhL S SL1) 8`NAME OF FILE TO MOVE?- 0 0|DLtH}% A., 1 <0 0 .@L# .BJ 1  DEHIB V L1 ,5 1 <0,L. I} JB|,A#Pd#DE 1 HI BDEHHII 1 B 1 , 1 <0,0Lf- B VJ},A#P, 1 <0 0L#L ߢ) 1* 1 ~0Yj383}mm ݭK}}`8}``|* ? ɛ,`|:(|/ 1L `DESTINATION CANT L}BE DOS.SYS0 0H{ $22Δ $28/L /) $2 Π $2 0 ξM}hAΞB,0 J 1 BޝDEHI,HDE 1HIHIDELSAVE-N}GIVE FILE,START,END(,INIT,RUN)O X0 1`BDEPHI V` X0H 1 L O}0 0 1L0`PLEASE TYPE 1 LETTER,0`hhL <0 1L0LA1 ,;ɛ7,"ɛ:ݦ1ݥP}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{Q}NAME TOO LONG B VL ` L1I H1EӝDL1|mDiE` V0`8d/8 i:"2!22 1R} L ERROR- 165ɛ+,' 20*.. өw2 1``2TOO MANY DIGITSINVALIDS} HEXADECIMAL PARAMETER800 0 8 00`,0'D800H,ɛh`2L1NEED D1 THRU D4uT} HEXADECIMAL PARAMETER800 0 8 00`,0'D800H,ɛh`2L1NEED D1 THRU D4uTHE DRAGON'S TAIL part IV This documentation may not be copied, photocopied, reproduced, translated, or telecommunicateV}d in any form, in whole or in part, without the prior written consent of Antic Publishing, Inc.The accompanying program matW}erial may not be duplicated, in whole or in part, for any purpose. No copies of the floppy disk(s) may be sold or given to aX}ny person or other entity.Notwithstanding the above, the documentation and accompanying disk(s) may be duplicated for the sY}ole use of the original purchaser.Antic is a trademark of Antic Publishing, Inc.eproduced, translated, or telecommunicateTHints on Programming Adventures.By Ed Churnside.1. Introduction.One of the nicest things about the adventure Dragon Que [}st, was all the letters I recieved from the players. This was an unexpected pleasure for me, I really didn't anticipate such \}response. A really big surprise was the number of technical questions on how the program was structured, or how I handled the ]} graphics. It seems that a lot of people were actively interested in writing their own adventures.Their first main problem ^}was in getting the assembler code they needed. 6502 assembler is a difficult and obscure language even for the experienced pr _}ogrammer and Basic on its own is far too slow. The first two Dragons Tail Volumes were my way of making the routines I wrote `}during the development of DQ available to the public. These disks contain everything you need to write your own adventures, a a}nd a lot more besides.The Dragons Tail disks are not an adventure harness, just plug in the variables and off they go. Such b} harnesses tend to restrict creativity and force the designer into whatever mold the harness programmers imagined. Instead th c}e Tail routines are an extention the the popular programming language Basic, making many types of programming easy and freely d} available, not just adventures. It is true that this means that the adventure writer has to do a little more programming, bu e}t it leaves the scope and nature of the adventure limited only by their own imagination, not by mine.I want to discuss adve f}ntures in general here, specifically graphic adventures, although much of what I have to say applies to text adventures too. g}I want to discuss some of the techniques I have found helpful and some of the problems I have encountered along the way. I li h}ke to believe that everyone has an adventure within them, just waiting to get out. I wont pretend that I know all the answers i}, I don't even know all the questions. I am just a fellow traveller that has walked this path before, offering a little advic j}e. If this helps you in your endeavors, then it will all be worth the effort.2. The Design.Before you start coding, bef k}ore you write your first routine, you need a design. What exactly is this adventure about and how am I going to present it. l}The first thing you need is a story line. An adventure should not be just a meaningless jumble of puzzles strewn in semi rand m}om sequence. The adventure writer must first and formost be a story teller. It is this story that grips your player. It keeps n} them coming back for more after weeks of frustration. Many of the adventures I have played forgot this rule. The only story o}their game had to tell was in the documentation, and the game itself was just rote problem solving. Very few of these have I p}finished, since the frustration soon became boredom, and then disinterest.Your adventure should be filled with interesting q}and colorful characters. The early adventures were barren places, with nary a living thing in sight, but these adventures wer r}e the first experiments into a new medium. The public is more sophisticated now, there tastes have changed, and you have to s s}upply them with a subtler tale to hold their interest. There are just so many barren caverns filled with treasure that one pe t}rson can stand.Your story should be fairly short, something simple, 3 or four paragraphs at the most. The adventure should u}start at the beginning of paragraph two. What I mean by this is that your realm must have some history. There should have bee v}n a sequence of events that lead up to your current situation.Your inventory should have some background too. Things should w}n't be the way they are without a reason. If you want the bedroom in the haunted house to contain a diamond tiara, then work x}out how it got there? The rich lady confesses "I was so scared, I dropped my diamond tiara and I have never had the nerve to y}back and get it." If there is $10000 dollars hidden behind the wall. An old newspaper clipping says the thieves were all kill z}ed in a big shootout at the haunted house. No trace of the money was ever found.Get the idea? Jewels, money, other inventor {}y is rarely just laying about for someone to find. You may not get the chance to use all the things you think of, but it is j |}ust these kind of details that add depth to your work.I also like a tale to have a moral, most of the best ones do. Try to }}remember that many adventurers are very young. Allow the character to steal and/or kill, but please don't reward them for thi ~}s. We have enough problems in the world today. Reward good behavior. If they want the bad guys to win, they can always watch }the news.Now you have a story and several sub plots. The next thing you need is a map. Draw the area the adventure is going } to take place in. Work out the spacial relationships between places. The garden is east of the house, the greenhouse is in t }he rear and so on.Now work out the path the adventurer has to take to solve the quest. What commands he must issue, what pu }zzles she has to solve. You will be surprised how easy this is if you have done your preparation thoroughly. The background a }nd sub plots will dictate many of the puzzles for you, keeping the story consistant and adding to the overall depth.Now fil }l in around your story. Imagine yourself in each location. What might you try to do? Add commands to give a suitable response }. Put in some red herrings, confuse the trail, put in clues and false trails. Work out characters for the people and creature }s in your land. Give them a reason for being there, an objective in life, give them a personality.Once again, I stress, onl }y a fraction of this filling will make its way into your final work, but by knowing your characters it will make it all more }real to your players. If they are sitting in a chair typing on a keyboard, then you failed. They must be standing in the atti }c, surrounded by the clutter of generations, quaking at the sound of the phantom footsteps coming slowly, ever so slowly, up }the stairs. A bat squeals. They jump! They shake and turn to meet their doom.Now you work out your text, your wording and y }our pictures. Lay out storyboards or sketches. Go through the whole thing again. Make sure it is consistant, that there are n }o holes in your logic.When you get to this point you have finally finished your design. You havn't even touched a computer }yet except as a word processor for the text. This is about a third of the total work. Don't shirk or try to shortcut this sec }tion. If you start coding too soon it will take much more time in the long run. Proper planning prevents poor performance. }ion. If you start coding too soon it will take much more time in the long run. Proper planning prevents poor performance. 3. The Limits.Now is the time to start thinking of the physical limitations that bound your adventure. If you don't want th}e player to be continually changing disks you have to be able to fit on a single disk side. This means that you can have 30-4}0 pictures, depending on the amount of detail. You can have 160-180 rooms. I should explain that I regard every different tex}t or text/picture combination as a room.The amount of memory available to you used carefully will be able to handle the abo}ve limits, and allow you 200-300 commands. I regard a noun/verb combination as a command.How are you doing. If your design }is too big, you will have to trim it down, or find some sensible way to split it up into more then one program/disk. If it is} too small you may want to fill it out a bit more. You should be aiming at the 80% full mark at the moment. Later tuning and }trimming will account for the rest of the space. I was unbelievably lucky in this regard with Dragon Quest. The first draft h}ad about 70 sectors to spare on the disk, and by the time I finished tuning, trimming, and filling out the background I had e}xactly 3 sectors left.4. The Mechanics.Now its time to start designing and coding your program. There are some things the} program has to do, regardless of what the adventure is about.You have to have inventory, some way of displaying what you a}re carrying and what is in a particular room.You have to have a simple table driven way of handling movement, N, S E W etc.}You have to be able to get commands from a keyboard, parse them, and get to the piece of code handling that command. You ne}ed to be able to handle alternate verb/noun combinations that mean the same thing.You have to be able to load a picture and}/or a piece of text from a disk and display it, quickly and easily.You have to be able to handle events, things based on ti}mers or counters that have no direct relationship to the current command.You have to be able to save a game in progress and} start again from the saved game.You may want to support multiple disk drives and/or printers.All of this needs to be don}e regardless of whether its a haunted house, a deep cavern, or just a trip to Vegas. There are any number of ways you can imp}lement this code, but keep the structure clean and table drive code whenever you can.5. The Specifics.Now its time to ad}d the code that is specific to your adventure. This is the easy part if you have done your preparation thoroughly. Now you dr}aw your pictures and put the whole thing together. You may need to do some trimming and tuning to get it all to fit. By the t}ime you finish this stage the work is two thirds complete.6. Testing - Part One.Now you test the program. Can you get th}rough the adventure. What about the other commands. Does it ALL work?At this stage you will come up with many new ideas, ne}w ways of saying things, things you never thought of, and so on. The adventure will expand and fill out by 10-15% during this} process as you find and fill in loose ends.Test it till you can't stand the sight of it any more. Then test it again!!}7. Testing - Part Two.In some ways the most important step. Give the program to 2 or 3 other people and get them to play it}. Write the documentation, prepare the disks and give it to them. Don't tell them much about it verbally, they are your playt}esters. They should have nothing that any normal player will not have.Get them to document: what they like; what they don't} like; parts they found easy; parts they found difficult; commands they think should work; any outwrite bugs they find (shame} on you!!). Get them to write it down and give it to you. DO NOT ARGUE WITH THEM. Take there praise and critisism with equal }enthusiasm, they are doing you a big favor.Collect together all their comments and decide what changes to make. If the chan}ges are extensive then repeat steps 6 and 7 again. Always try to keep one person to play test the very final version, when yo}u are absolutely sure you are finished. Have no pride at this stage, if they say something is too difficult, that does not ne}cessarily mean that they are morons. Try to be open minded and objective. The more you can get out of this stage, the better }your final product will be.8. Final Polishing.OK. It is done. Now put it on the shelf for a month and forget about it. W}hen you have almost forgotten it, pick it up and go through it one more time. Remember your name will be on this, people are }going to judge you by it. Is this something you are proud of or not. If you see something you want to change, then change it.} Is it really finished? Bring back all the pride you swallowed in step 7. Is this THE BEST you can do?f you don't want thj9. Publishing.People who try to publish programs need the tenacity of a bulldog and the hide of a rhino. On a bookshelf nea}r my computer I have all the rejections I received on the program Dragon Quest, which I keep meaning to put away. All kidding} aside, it is two inches high. I must have got rejections from every publisher that you ever heard of and probably a few from} ones you havn't. Why? Well for a variety of reasons. Contractual obligations to well known adventure companies. Incompatabil}ity with there marketing strategy and so on. Perhaps the most common reason, though none of them ever said so, was the uncert}ainty over the future of ATARI. Remember the long dry spell when virtually no new titles were published for the ATARI. Well i}t wasn't that programs were not being written, but publishers just wouldn't publish them. And who supported ATARI throughout }this spell? ANTIC did. That is why I eventually published through ANTIC and why I advise you to do the same.If you use the }Tail routines, you have to at least try to publish via ANTIC since they have certain rights on the software, but even if you }don't they are worthy of consideration. The royalties will never make you independantly wealthy to be sure, but they are a re}asonably competent organization. They give your product a fair trial. They give some useful feedback, not as much as I would }like, but some. They certainly give your product good exposure in their catalogue. Best of all they pay the royalties promptl}y, on time, every quarter. I don't have to be nice here, I could say nasty things if I wanted too, but I really don't have an}ything nasty to say. There are one or two other publishers that I have used that I could say a lot of extremely nasty things }about, but I will restrain myself.10. Technical Tips.Handling Inventory.There are really two main types of inventory,} visible and invisible. Visible inventory is stuff you can pick up, carry and use, It list when you do an INVENTORY command, }it lists when it is in a room, it is what you normally think of as inventory. Invisible inventory is all the counters, timers} and switches that effect the game, but you really don't know it exists. For example, in Dragon Quest, you can get into serio}us trouble if you drink too much at the inn. How much you have had to drink is a piece of invisible inventory.The easiest w}ay I have found to handle visible inventory is to give everything a value from 0 to 255. 0 means that it doesn't exist yet, t}he sequence of events that bring it into the game has not happened. 255 means that you are carrying it. Values from 250-254 a}re assigned special meanings such as 254 for an item you are wearing, instead of carrying. All other values are the room numb}er the item is in. If it is in room 30 then its inventory value is 30.In Dragon Quest I used an array for all inventory, V(}24). I now think that using the bottom half of page six is a better way to go. If item 5 was the shield, and I wanted to know} if you had the shield, then I could have written IF V(5) = 255 THEN.... Under the new system I would write if PEEK(1664+5)=2}55 THEN... These two methods are very similar, but the second is easier to load and save using GPBYTE, and takes up less memo}ry.By regarding everything you know about the player as inventory, then saving and restoring the game is a piece of cake, s}ince you only have to save the inventory table and the current room. It is a good idea to group your visible inventory togeth}er so it is easier to display.Handling Rooms.Every piece of text, or text picture combination is a room. I recognise two} types of rooms, ones that correspond to real locations, the bedroom, the garage; and ones that can occur in many locations s}uch as looking at an item you are carrying..."the lamp is old and dirty". This makes it very easy since every valid command l}eads to a change in room, so you only need one "new room" routine. It is important not to confuse room and location.Handl}ing Text.One thing is for sure, the text is going to be out on a file somewhere and not Data or Print statements in your pr}ogram. The text for Dragon Quest was close to 16K long. 16K of text + 3K of assembler routines + 4K of screen area + a 2K buf}fer for SCRLD = 25K. This would only leave 7K for your program. You can't do very much in 7K.The easiest way I have found i}s to have a table of 3 byte pointers to a text file and use the Point Statement to access the file. Use a string to store the} pointers. You might have a routine that looks something like this:500 REM NEW ROOM510 REM R=ROOM520 W=PBUF+3*R530 T=PEE}K(W)+256*PEEK(W+1)540 S=PEEK(W+2)550 POINT #1,T,Sand so on.There are many ways you can display the text. I prefer to la}y out my text in the file just the way it will display on the screen. This makes it easy to handle since you don't have to do} any word processing as you print.I create my text using a word processor and build my Pointer and text files with a small }utility program. This makes it very easy to change the text and you don't have to repeatedly test the program for small text }changes, since it is not actually part of the code.Handling Pictures, Location and Movement.Every real location has a pi}cture, and places you can move to with the direction commands, North, South etc. These also need to be in a table. So that I }don't need two pointer files I embed this stuff with the text.My word processor file might look something like this:10 05} 20 21 22 215 0 0You are at the crossroads.There is a sign here.@0The rope is strong and light.@This is an example }of a real room, and a text-only room. Let us examine it closely. 10 - the location. 05 - the picture number that goes with th}is location. 20 - Which room you go to if you go north; 21 - south; 22 - east; 215 - west; 0 up; 0 - down. This has some spec}ial values. Numbers greater than 200 like 215 mean that there is something special about this movement direction, and the num}ber is a pointer to a routine that handles this movement. 0 means that you cannot move in that direction. Then the text follo}ws laid out into lines just as it would print. The @ is a terminator to show the end of that room. The next room has a 0 in l}ocation, which means that it is not a real room, so does not change your position.This text file is run through a utility t}hat puts it out to a file and builds the pointers and puts them to another file. In the start up code for the adventure the p}ointer file is read into a buffer. Then the code to handle room changes looks something like this.500 REM NEW ROOM510 W=PB}UF+3*R:T=PEEK(W)+256*PEEK(W+1)520 S=PEEK(W+2):POINT #1,T,S530 GET #1,W:IF W=0 THEN 560540 LOC=W:GET #1,PIC:GOSUB NEWPIC55}0 FOR I=1 TO 6:GET #1,W:D(I)=W:NEXT I560 INPUT #1;W$:IF W$<>"@" THEN PRINT W$:GOTO 560570 RETURNThis is slightly oversimp}lified, you still have to take care of text that is longer than can display in one window, but I am sure you get the general }idea.the movement routines then become very simple.2010 REM MOVEMENT2011 IF D(I)=0 THEN R=1:GOTO ROOM:REM ROOM 1 IS CAN}T MOVE THAT WAY2012 IF D(I)>199 THE GOTO 3000+10*(D(I)-200):REM 3000 IS SPECIAL MOVEMENT ROUTINES2013 R=D(I):GOTO ROOM2020} REM NORTH2021 I=1:GOTO 20102030 REM SOUTH2031 I=2:GOTO 2010and so on.Parsing.How you parse depends upon your pers}onal taste. Two word parser, three word parser, all the way up to Infocoms pseudo english parser. A couple of things are cert}ain. You should use INPSTR to get the keyboard input, then PARSE to break out the words. Always work in fixed length words, 3} characters, 4 characters, whatever your preference, but make them fixed length or the code to handle substrings will eat up }all your memory. Sooner or later you will have to turn the input into a number to be able to get to the correct routine.The}re are two common acceptable easy ways to parse. One is that you recognise a verb and a noun seperately. This means that when} you see unacceptable input, you can object to the part you don't like. If the verb is invalid, you may give one message, it }if is the noun you don't recognise you give a different message. The other way, which is the way I use, is to combine the ver}b and noun into a command, and look up the command. This means only 1 table to look up, which is faster and uses less memory.} The first way is slightly more user friendly, but I prefer to spend my time on puzzles rather than a fancy parser.Despite }Dragon Quests speed, I actually look up the command in Basic and don't have an assembler routine for this. I do this by a sne}aky use of the restore command. Suppose my command table starts at line 8000 and I reserve 8000-8999 for its use. Using DATA }statements, I will put all the commands that start With the letter A at 8650-8659, B at 8660-8669 and so on. This is because }the ASCII value of A is a 65, B a 66 and so on. Then my parsing looks like this:1. Get command from keyboard.2. Parse it i}nto a 6 letter command, the first 3 letters from the first two words.3. Substitute really common alternates. GET for TAKe an}d so on.4. RESTORE 8000+10*ASC(CMD$(1,1))5. READ CMD1$,CMDNO:IF CMD1$=CMD$ THEN RETURN6. IF CMD1$10 AND LOC <>23 THEN GOTO CANT3201 IF V(3)=255 OR V(7)) }=255 THEN GOTO CANT3202 IF LOC=10 THEN R=37:GOTO ROOM3203 R=45:GOTO ROOMI cant remember the actual room numers or invento) }ry numbers I used offhand, but this is essentially the correct code.Making it fit.In writing an adventure you have two m)}ain enemies, disk capacity and memory space. You will fight with these two foes constantly.The main user of disk space is)} your pictures. Screen compression helps a lot. Dragon Quest has 34 graphics 7 screens. If these were stored in Paint format )}34*26=884 sectors=NO CHANCE. If you do run out of room there are some things you can try. Try to find places that you can mak)}e do with a lower res screen, say graphics 5. Try to find places that can share the same picture, the forest and tunnels in D)}Q for example. Consider having some rooms that don't have pictures.Memory must be used efficently from the word go. It cont)}rols the number and complexity of your puzzles. The first and most important point is having a good, well structured design. )}From the examples I have given it is obvious that I found ways to make room changing and movement into common routines. Get a)}lmost all the text out of the program and onto a file. Find ways to store your tables efficently. Use bytes in strings not nu)}meric arrays.Two simple techniques save a lot of room. First, put as many commands on a single line as you can. This saves )}you 3 bytes for every line you eliminate, and executes a lot faster too. Secondly, use variables for commonly used constants.)} A variable takes about 10 bytes to define, but only uses 1 byte each time it is used. A constant take 6 bytes every time you)} use it. For instance you might use the constant "1", 100 times in your program. By setting a variable U1=1 then using U1 ins)}tead of 1 you will save about 500 bytes!! Do this for commonly used labels too. My room change routine was at line 1500 so RO)}OM=1500 was in the startup code. Thereafter I used GOTO ROOM and GOSUB ROOM. Since this routine was executed about 250 times,)} I saved about 1250 bytes!! Quite a significant amount of memory and the program becomes much easier to read too!! Since 255 )}meant you were carrying something, then U255 was used about 300 times, saving 1500 bytes and so on. I think that this techniq)}ue alone gave me about 10K to put in extra puzzles and more locations.A minor point that will save you some room is the red)}undancy of the statement GOSUB ROOM:RETURN. There is no point doing a gosub followed by a return. You may as well just do a g) }oto. The net effect is the same and you save 2 bytes.Error Trapping.If you hope to sell your program it will have to ha)!}ve disk I/O errors trapped. There is always the possibility that the user may remove the disk for some reason, especially if )"}you have a save/load game feature. Remember the text for these errors has to be in the program, you can't get it from disk be)#}cause the disk is not necessarily there.If you allow command echoing to a printer, you have to trap printer errors too!Th)$}ere should not be any need to trap any other errors, your program should not contain any.The break and system reset keys sh)%}ould be disabled. The Tail routines disable the break key and POKE 580,1 will take care of system reset.Testing Commands.)&}I found two commands to be very useful during testing. ROOM n, which would put me instantly in any room, and INV n n, which w)'}ould put any value in any inventory item. This allowed me to check my code quickly without having to go through long sections)(} of the adventure to get there. I removed these two commands prior to the release.I also trapped the picture loading routin))}e in such a way that the program would just give me a blank screen if the picture was not there. This allowed me to set up an)*}d test the adventure before I had finished drawing the pictures.11. Dragon Quest Source Code.This side of this disk con)+}tains the source code, word processor text file, and utilty program from Dragon Quest. This isn't a playable version since it),} is missing the assember routines and the pictures.The assember code that was part of this program was a primative version )-}of the Tail routines. This code was written for speed and size, not as an example of programming. However, its coding style i).}s consistant with my normal design style and still contains comments. Armed with the technical sections of this guide, it sho)/}uld not be too hard to follow the code.Bear in mind that I include this only to illustrate the points here, and as an examp)0}le of A way to code a basic adventure, not THE way to code one. This is intended to help smooth over some of the sticky desig)1}n points, not replace your own natural creativity. This was my first attempt, and there are a lot of things I will do differe)2}ntly if/when I write another.11. Summary.Well, that's all I really have to say. I hope that I haven't confused you too )3}much. If you are still struggling with the basic command set, then a lot of this might be a little over your head, but as you)4} get to grips with your adventure, it will start to make more sense.What! You thought an adventure was just a load of IF,PR)5}INT and DATA statements. Well it could be, but this type of adventure will be slow and small. Just like any old adventure you)6} find in magazines. There is nothing wrong with this! A lot of people have fun writing them and playing them.However, using*Z}0 0 0 0 0 0 0 0ҠԠΠŠ̮ AN ADVENTURE BY ED CHURNSIDE VERSION 2.0 COPYRIGHT 19858}ԠΠŠ̮1 1 4 7 5 150 0 0YOU ARE IN THE FOREST.THERE IS A SIGN HERE.2 2 4 7 5 150 0 0SOMEONE HAS WR9}ITTEN"THE KING IS A FINK" ON THE SIGN.3 3 4 7 5 150 0 0YOU ARE IN THE FOREST.4 3 220 4 5 150 0 0YOU ARE IN A FOREST.:}5 3 5 3 5 5 0 0YOU ARE STANDING IN A FOREST.6 4 1 10 5 7 0 0YOU ARE NEAR THE FOREST. THEREIS AN OLD WOMAN HERE.7 3 7 1;}0 5 150 0 0YOU ARE DEEP IN A FOREST.8 3 3 8 8 11 0 0YOU ARE STANDING IN THE FOREST.9 5 0 4 4 4 0 0A LARGE CASTLE LIES <}IN A PLEASANTWOODED VALLEY. THE DRAWBRIDGE ISCLOSED.FROM HIGH ON THE RAMPARTSA GUARD SHOUTS,"WHAT DO YOU WANT?"10 6 7 =}0 6 7 0 200SCATTERED ROCKS SURROUND A PIT.11 7 8 8 8 12 0 0TO THE WEST IS A STEEP CLIFF.AT THE BASE OF THE CLIFF IS A CA>}VE.THERE ARE BONES SCATTERED ABOUT.12 8 190 190 11 190 0 0IT IS DARK INSIDE THE CAVE.THE ONLY VISIBLE EXIT IS EAST.13 ?}9 0 0 11 0 0 0YOU LOOK AROUND THE CAVE IN THEFIRELIGHT BUT YOU SEE NO NEW EXITS.14 10 0 0 11 0 0 0A DWARF APPEARS AND OF@}FERS TOSELL YOU A FINE NEW SWORD FOR490 GOLD PIECES.15 10 0 0 11 0 0 0"I HAVE ANOTHER SWORD BUT IT'S AFAMILY HEIRLOOM. A}I WANT 490 GOLDPIECES AND 50 SILVER PIECES FOR IT."16 11 0 17 0 0 200 0YOU'RE AT THE BOTTOM OF THE PIT.THE WALLS GIVE OFB}F AN EERIE GLOW.A PATH LEADS SOUTH.17 12 18 17 17 17 17 17YOU'RE IN A MAZE OF TUNNELS.YOU SEE SIGNS OF TROLLS.18 12 17C} 17 19 17 17 17YOU ARE IN A MAZE OF TUNNELS.YOU SEE SIGNS OF TROLLS.19 12 17 17 17 160 17 17YOU ARE IN A MAZE OF TUNNELSD}!YOU SEE SIGNS OF TROLLS.20 12 17 25 17 17 17 17YOU'RE IN A MAZE OF TUNNELS!YOU SEE SIGNS OF TROLLS.21 12 21 22 21 21 E}21 21YOU'RE IN A MAZE OF TUNNELS!YOU HEAR GOBLINS LAUGHING.22 12 21 21 21 21 23 21YOU ARE IN A MAZE OF TUNNELS!YOU HEARF} GOBLINS LAUGHING.23 12 24 21 21 21 21 21YOU ARE IN A MAZE OF TUNNELS.YOU HEAR GOBLINS LAUGHING.24 12 21 210 21 21 21 2G}1YOU'RE IN A MAZE OF TUNNELS.YOU HEAR GOBLINS LAUGHING.25 13 21 110 0 0 0 0THE WAY SOUTH IS COVERED BY ALAVA FLOW. IT IH}S VERY HOT. APATH LEADS NORTH.26 14 25 0 0 0 0 0THE LAVA'S TO YOUR NORTH. A DEEPCHASM LIES TO THE SOUTH. YOU CANSMELL SI}ULPHUR.27 15 0 0 0 21 0 0THE SMELL OF SULPHUR IS VERYSTRONG HERE. A PATH GOES WEST.28 16 0 0 0 21 0 0THERE IS A SUDDENJ} RUSH OF AIR ASTHE DRAGON GLIDES DOWN AND LANDSIN FRONT OF YOU.29 15 0 0 0 21 0 0THERE IS A FIERCE BATTLE. THEDRAGON ISK} MORTALLY WOUNDED BUTIT MANAGES TO FLY AWAY. THE PENDANT BREAKS FREEIN THE FRACAS.30 18 180 0 33 0 0 0THE STREAM IS DEL}EPER HERE. AT THEFAR SIDE OF THE STREAM IS A SMALLWOODLAND SHRINE.THERE ARE SOME SMALL STONESSCATTERED ON THE GROUND.31M} 19 0 0 0 53 0 0INSIDE THE SHRINE IS A SMALLSTONE ALTAR. THERE IS A CURTAINON ONE WALL.32 99"THANK YOU FOR SPARING MY LN}IFE.I NAME YOU DRAGON-FRIEND AND GIVEYOU THIS PENDANT AS A SYMBOL.THE PENDANT IS THE BOND BETWEENUS. SAY MY NAME IN TIME O}OF NEEDAND I WILL COME TO YOUR AID.BEWARE OF THE GOBLINS. THEY WILLKILL FOR THE PENDANT. YOUR SWORDAND SHIELD WON'T PROTEP}CT YOU." WITH THAT THE DRAGON FLIES AWAY.33 20 34 4 4 4 0 0YOU ARE OUTSIDE THE CASTLE.THE DRAWBRIDGE IS OPEN.34 21 12Q}0 170 130 35 0 0YOU ARE IN THE CASTLE COURTYARD.IN THE CENTER OF THE COURTYARD ISA DEEP WELL.THERE IS AN INN TO THE EAST.R}ARCHWAYS LEAD OFF TO THE NORTH,SOUTH AND WEST.THE NORTH ARCH IS GUARDED.ON ONE WALL ARE SOME POSTERS.35 22 0 0 34 0 38 S}36YOU ARE ON SOME STAIRS. THEREIS AN ARCHWAY TO THE EAST.36 23 0 0 0 140 35 0YOU ARE AT THE BOTTOM OF THESTAIRS. THERE T}IS A DOOR TO THEWEST.37 24 0 0 36 0 0 0YOU ARE IN THE DUNGEON. THEREARE FOUR DOORS HERE. YOU CANHEAR VOICES.38 25 0 0U} 0 0 0 35THERE IS A WIZARD HERE AND HELOOKS IRRITABLE. HE SAYS "GET OUTOR I WILL TURN YOU INTO A TOAD."39 26 0 34 0 0 0 V}0YOU ARE IN THE KING'S GARDENS.THE KING IS HERE SITTING ON A LARGETHRONE. THERE ARE GUARDS NEARBY.40 27 0 0 0 34 0 0THEW} INN IS EMPTY EXCEPT FOR THEOLD MAN SERVING BEHIND THE BAR.41 28 0 0 0 0 0 0THE DRAGON CRASHES IN SCATTERINGTHE GUARDS AX}ND CRISPS THE KINGWITH A BLAST OF FLAME.THE KING'S SPELL DIES WITH HIM.SUDDENLY THE DRAGON TURNS INTO THEPRINCESS. THE GUY}ARDS ALL BOW."I REMEMBER NOW," SHE CRIES ANDTHANKS YOU FOR FREEING HER FROM THESPELL.YOUR ADVENTURE IS ALMOST OVER!42 2Z}9 0 0 0 0 0 5YOU CLIMB UP A TALL TREE. YOU SEEA BIRD'S NEST HERE.43 29 0 0 0 0 0 5IT LOOKS LIKE A MAGPIE'S NEST.44 17 [}120 170 130 35 0 0SOMEONE HAS WRITTEN"THE KING IS A FINK" ON THE POSTERS.45 99"I CAME TO THE THRONE WHEN MY SISTEROUR P\}RINCESS AND RULER WAS KILLEDBY THE DRAGON.WE WERE HUNTING IN THE FOREST.THE PRINCESS AND I WERE SEPARATEDFROM THE OTHERS.]}SUDDENLY THE DRAGON SWOOPED DOWNAND CARRIED OFF THE PRINCESS.I STILL REMEMBER HER SCREAMS.PLEASE FIND THIS BEAST AND KILL^}IT IF YOU CAN. HERE ARE 500 GOLDPIECES TO USE IN YOUR QUEST.THE PRINCESS WAS WEARING A PENDANT.RETURN IT TO ME FOR THE 10_}00 GOLDPIECE REWARD."46 26 0 0 0 0 0 0THE KING ORDERS THE GUARDS TOPREVENT YOUR ESCAPE AND DEMANDSTHE PENDANT.47 99Y`}OU RETURN THE PENDANT TO THEPRINCESS. SHE SMILES AND ORDERS ABANQUET IN YOUR HONOR.THE PRINCESS REWARDS YOU HANDSOMELY.YOa}UR ADVENTURE IS OVER NOW BUTYOUR FUTURE IS SECURE. 48 99AS YOU DRINK YOUR BEER THE OLDMAN TELLS YOU A STORY. "DID YOUb} KNOW THAT KING HAMLETIS AN APPRENTICE WIZARD? HIS SPELLSDON'T WORK PROPERLY THOUGH.HE TRIED TO TURN A SPARROW INTOA HAWKc} BUT IT TURNED INTO A MAGPIEINSTEAD AND STOLE THE WIZARD'S HAT.THE MAGPIE HAS BEEN STEALING THINGSEVER SINCE. YOU CAN'T PUd}T A BRIGHTOBJECT DOWN FOR EVEN A MOMENT."49 99AS YOU DRINK YOUR BEER THE OLDMAN TELLS YOU A STORY. "THE OTHER DAY I WAe}S GOING TO VISITMY FRIEND DURIN THE DWARF, THE ONEWHO MAKES MAGIC SWORDS.I WAS WAYLAID BY THIEVES IN THEFOREST. THEY WEREf} AFTER MY GOLD.THERE WAS NO WAY TO ESCAPE.SUDDENLY THE DRAGON IRISBANEAPPEARED AND DROVE THEM OFF. THENSHE FLEW OFF TO THg}E SOUTH."50 99AS YOU DRINK YOUR BEER THE OLDMAN TELLS YOU A STORY. "YESTERDAY ONE OF THE GUARDS GOTSO DRUNK HE FELL DOq}pB'DOS SYSB*+DUP SYSBUDOC 000B6ZDOC 001B&DOC 002BPDOC 003B{7ADVEN TXTB ADVENTXTBASBADVEN BASBUANTICADVBASB7DOC 004GED    x>2.|cTFPj3R]S]/:E   Pg 0 $ VW  Ām[/]5BPgĀĀgĀ g `!!&g"."##x$ $&%%_ '^'(Ug&U)̀(WN THE WELLTHAT THE WIZARD BUILT.HE GOT OUT O.K. BUT HE LOST THEKEY TO THE DUNGEON AND NOBODYCOULD FIND IT.THE KING WAS r}SO ANGRY THAT HEHAD THE GUARD TURNED INTO A TOADFOR DRINKING ON DUTY."51 30 0 30 54 54 0 0THERE IS A GATE SET INTO THE Ws}ALL.THROUGH THE BARS YOU CAN SEE THEGARDEN.52 31 0 0 31 53 0 0YOU ARE IN THE GARDEN FACINGEAST. THE SHRINE IS DESERTED.t}53 32 0 0 52 0 0 0YOU ARE IN THE GARDEN FACINGWEST. THERE IS A LARGE TREENEAR THE GATE.54 99YOU WALK AROUND THE SHRINu}E ANDBACK TO THE GATE, WITHOUT FINDINGANOTHER ENTRANCE.55 99YOU SEE SEVERAL PIECES OF WOOD.56 99THERE IS ONE TREE HERv}E THAT YOUCOULD PROBABLY CLIMB.57 99YOU SEE NOTHING OF INTEREST.58 99THE OLD WOMAN THANKS YOU.59 99SHE GIVES YOU A w}POTION THAT WILLPROTECT YOU FROM FIRE IF YOU USEIT CAREFULLY.60 99THE POTION IS IN A SMALL BOTTLEWITH A SKULL AND CROSSx}BONES ONTHE LABEL.61 99THE POTION IS POISONOUS. YOU COLLAPSE AND DIE.62 99 THANK YOU FOR PLAYING DRAGON QUEST.63 9y}9YOU RUB THE POTION ALL OVERYOURSELF. YOU ARE NOW PROTECTEDFROM FIRE AND HEAT.64 99SHE LOOKS ROUND CAREFULLY THENWHISPz}ERS, "SOMETHING IS ROTTEN INDENMARK." SHE WINKS.65 99YOU THROW THE ROPE INTO THE PIT.66 99THE BOTTLE BREAKS AND THEPO{}TION RUNS AWAY.67 99YOU FALL DOWN THE PIT AND BREAKYOUR LEGS. YOU DIE OF STARVATION.68 99THE SWORD IS OLD BUT SERVICEA|}BLE.THE BLADE SEEMS TO GLOW SLIGHTLY.69 99THE SWORD HAS A STEEL BLADE ANDA BRASS HANDLE. IT LOOKS SHARP.70 99THE DRAG}}ON LOOKS VERY FIERCE.IT IS WEARING A JEWELLED PENDANTAROUND ITS NECK.71 99THE WELL IS VERY DEEP. YOU SEEGOLD COINS AT T~}HE BOTTOM BUT YOUWILL NEVER GET THEM.72 99"THIS WILL FIX THAT MAGPIE,"SAYS THE WIZARD. HE MAKES THE HATINVISIBLE AND TH}EN PUTS IT ON.HE GIVES YOU A PAIR OF MAGIC BOOTS.73 99THE WIZARD TURNS YOU INTO A TOAD.YOU FORGET YOUR FORMER LIFE ANDL}IVE OUT YOUR DAYS IN THE MOAT.74 99"THE BOOTS ENABLE YOU TO JUMP LONGDISTANCES BUT NOT OVER FIRE ORWATER," SAYS THE WIZA}RD.75 99"I WAS IMPRISONED BECAUSE I WROTE'THE KING IS A FINK' ON SOMESIGNS."76 99"LEAVE NOW!! BEFORE THE GUARDSCOME }BACK."77 99"DON'T TRUST THE KING. HE WILLCHEAT YOU IF HE GETS THE CHANCE."78 99"FIND PRINCESS IRIS IF YOU CAN.IF YOU }RETURN HER TO THE THRONESHE WILL REWARD YOU."79 99THE KING TAKES THE PENDANT THENSIGNALS TO HIS GUARDS. THEY GRABYOU AN}D THROW YOU IN THE DUNGEON.80 99THE HEAT IS TOO MUCH FOR YOU.YOU PERISH IN THE ATTEMPT.81 99YOU CANNOT CARRY WEAPONS I}NTOTHE KING'S GARDENS.82 99THE KING IS BUSY NOW. COME BACKWHEN YOU HAVE THE PENDANT.83 99YOU SEE A SHADOW BEHIND A TR}EE.YOU HEAR A SHARP TWANG!! AN ARROWSTRIKES YOU IN THE HEART.84 99YOU ARE DRUNK. YOU FALL INTO THEMOAT AND DROWN.85 9}9THE STREAM IS BROAD AND DEEP.YOU ARE CARRYING TOO MUCH TO SWIM.YOU DROWN!!86 99YOU TRIP ON SOMETHING IN THE DARK.YOU }FALL AND BREAK YOUR NECK.87 99GOBLINS TRAP YOU IN AN AVALANCHEAND STEAL THE PENDANT. YOU ARECRUSHED!!88 99THE SAFE OP}ENS. INSIDE THERE ARETHREE ANCIENT SCROLLS. THE FIRST SCROLL SAYS THAT THETRUE RULER OF THE LAND MUST WEARTHE JEWELLED P}ENDANT.THE SECOND SCROLL SAYS THAT TOSUMMON A DRAGON YOU MUST SAY ITSNAME IN ITS LAIR.THE THIRD SCROLL APPEARS TO BEA TR}EATISE ON DRAGONS. IT'S SOOLD YOU CAN HARDLY READ IT.D$#GO%) <&V! &% P&(). (@!Y @#V!)?@#-@@}- A:*@> T6-P:'AV,$6-&AV$*8%@F%@T6-%@4@}(@4B:,AP A  INIT*] +/(PUT ADVENTURE DISK IN DRIVE 1L(PUT TEXT} FILE IN DRIVE 2]( PRESS RETURN4L;@@,;B,,67@@,. =67B,. F6-C:,L6->AdA}UH F:Ad,"AUA@RAdAU\\0@@D2:ADVENTXT.LSTY@@} D:ADVEN.TXT\$D2:ADVENTXT.BAS''AA@@@@@ 1FFSCRTDCAVGSSCRLBUBUFLEUU9PRTSUUU1PRTXUUU1UU9U9U1SADUURRSAVGSTAADPARS!}UEXIROOOCANU1NSPEGETOUU1U1U1INVCYYDDIIDISGBYT@!}@ @ !} !"#$%&!}'()*+,-./0123456!}789:;<=> **ADVEN - DRAGON QUEST 2.0 04/20/85.dMAINLINE!}nj`;@,;@@,9@,;@,;@@,9@',9@,;A,j A`x A0 A !}? A*@@?6-?:<@<<,% A @" A%$PRINT LINE!}F:AV,Ap((( AdAU&6-F:Ad,&"AUA@!}AdAU(}"@(6-$("$  A3 $ 6-$PRINT!} INVENTORY " $" -8, " A&  &6.YOU SEE THE FOLLOWING:/ "/6.YOU ARE CARRYIN!}G THE FOLLOWING: #A$C -"")"(6-8%+",,16-B:,C67&<&,.=:,.#8,"*+@)!}8,",# 8 = " $B2 ".6.YOU ARE NOT CARRYING ANYTHING.2 L""*8,"#A!"" V""*8!},"#A""" `""*8,"#A#"" j$NEW ROOMH 6.6-%@$76-F:,$AV%F:%@!},H6-F:%@,-@)@-"A"67,.=:,"67B:,%,..SCR% -)@!}!68,-% 4A A@PRINT TEXTJ (}T5 -@#B:,' + 5 A@!}^ 6- h 6- Ar 6- $6AAR'@e3AV6$ EXECUTE COMMA!}ND 8 6- A5 A1' A35 A@%$8$ GET COMMAND& 6. 0 ( : 6-?!}:<, 6-?::@4,>:@4,?/$ 6- 8,"6-@ 8, A6!}-8,  Ai%8, 6- A@ 6- A@ 6- A@ 6- A@ 6- A@!} -8,"68,-   + "6- 6-6-(8,+$2 ".6.THE SIGN IS ROPED TO THE TRE!}E.2 6-@   R( }WHAT ABOUT? A134ABODRA)4DRA?6-@3N68@%,-R !}(}NO WAY.$ 8,  68,-    8,"68,-6-A`   6-AQ!} "  # 8,6- $ 68,-6-AR , "*8,"6-AS -9/"8,)8,")++"!})",*+8,")8,",,56-9 . 651!*@B*@C*@0*@S5 7)"*8,"68,-%6-@!}U) 89)+")"@S,*8,*8@,56-@V9 9"@S6-Aa :6-@W @!}*@3 A J 6-K 8, L 68,-M (}OK.$T 6- ^ "*8,"6-AI _&!}"*+8,")8,","68,-& a h 6- r)8, s% 68,-8,!6-@X% t 68,-6-!}@Y | 8, }6-@`  8, 6-@a# #8@',!$H:,AB5v)( WOULD!} YOU LIKE TO TRY THAT AGAIN3 A2L7@<@,4Yl68@',-8@',%@r6-v $$7@<@!},0NAB3M"(DO YOU WANT TO PLAY AGAIN, A2M7@<@,4YAap$$7@<@,0NAB!}56-@b  AB8 8,  68,-6-@c   6-@d )8!}, 8( }TO WHAT? A180TO ROC*0ROCA@ 68,- 8, )+*8,",  68,-!} L(}WHERE? A1L0IN PIT*0INTPIT*0DOWPIT*0PITA@(6-@e 8,"%68,-($!} 68,-6- +*,)8,  "68@!,-@06-@&& ?( }QUIT (Y/N) A2!}?7@<@,4YAB5$;"@S*8,"6-AT& 26-@Q86-;$"@C6-@B!}'#+*@B,)8,")8,"' 6-@G& @1 6-A @1 6-!}A @1 A6-A'  A11012 GP*012G=6-AA 18@&,"!68@&!},--6-@1 6-A # 6-(} A 6-#$@B*@C  8,"68,-@C!}6-@C  6-  6-  6- & 6- 0 6- : 6- D 6- N 6- !} X 6-Y 8,"68,- Z b 6-c 8, d68,-@C l 68,-6-@f v!}@4)8,ADrwL(}WHERE? A1L4IN WEL)4INTWEL)4DOWWEL)4WELADsx 6- ADQy"!}8@ ,!6-AF" z6-A {b-AUA1AAU&5 C68,-8,&O6-@0!}^68@ ,-b  6- ADQ 6- ADQ 8,"68,-  6- ADA 6- ADA++!}"@F)"@A)"@9AH 6- ADQ 6- ADA@@ 6-@  *!} 6-@g )"@6*8,"%68@,-)    6-A   6!}-A   6-A ")8,)8,)8," M( }WITH WHAT? A1M0WITFLI*0!}WITSTO*0FLI*0STOA@L( }AND WHAT? A1L0ANDKEY*0ANDSTE*0KEY*0STEA@ 68,-6-!}      8,"6- (}NOTHING HAPPENS!$ * 6&8,)8, A)+"*8,,26!}-A6 8 68,- 68,-8,&A&"/68,-868,-+ 6- '6.THE DWARF VANISHES.+  **!}8, !&")8@,""6-@h& "6-@i * * +6"@*8,"*8,)6-Aq!}268,-6 ,&"@*8,""6-@& -6-Aq 4 * 56-A  >   ?-!}")"@3)"@S)6-A- @)"@0)"@Q%6-A) A H%"@0*8,"%68,-@0"}I 8,"6-Ac J 8, K6-A R@1 S 8, T"68,-@16-A"}" U$\8,*8, ]6-A f"@Q6-AU g"@0)@R h p&"}"@'*8,""6-@(& q3#"@F*8,"*8@$,"/6-@A3 r AF"z*@3 {6"}-A @( 6-@p !@()8,)8,! ) -8,"@()68,-@)"}& 68,-@)"6-@)& @( 6-AD @4 (6-@D 6-@4"}%6-($"@46-A &"@9*8,""6-A& "@96-A "@F"}6-A  @4 8@,"Ap16-A  @4 6-@q "}@4 18@,"!68,-@4-6-A!1  @8)8, % 68,-68,-!6"}-@r% @8 8,")8,! 6-@s @8 8, AH2 8, " }6-A" 6-@t @( #8,")8,"6-AE# + 68,-68@$,-'6-@2" }+ ) -8,"@()68,-@'% 6-####!6-@'% @&  8,"6-@'" } 6-A# @7 <68,-8,%-8, @u)8,!@x<68,-@u 6-8, " }@9 % 8,"68,-!6-@E%  8,6-A$ "8@$,6-@F" 6-@y" } **+"@9)"@F,*8,"AH@A 16-@G '6. D:ADVEN33.SCR1 A=&("} YOU TOOK 8, TURNS.=8@',"AHG1( YOU WERE KILLED 8@', TIME@8@',!G(S"} (. !6. D:ADVEN34.SCR! A! AH$@9*@F % 8,"6-A% &6-A&"} .@A /6-A( 8@A 96-A) ;@@ B!@@)8,)"}8, ! C 68,-68,-8,& L@@ M6-A0 V 8, W5 68,-&68@ ,-8@ "},%2@@5$X#68,-8,%8,!#68,-Y6-@G%8, ` Aj At@@ "}u6-A1 ~@6*@7 "@76-A2 !!8@,"*8,ApA6-A3"}   6-8,*8,   6-  6-  6-  6-  6- " 6-"}8,"6-A4"   6- @@)8,  68,-6-A5 !@@)8,)8"}, ! !68,-8,&6-@! 6-@ 8,")8," 6-A6   6-AV"}  6-AV *@3 ( }RIBBET !!$(*@3 )6-AG 2"@0"}Ap3"@Q6-@0 4!*@3 56-AH <@4 =6-AF F"}$"*8,"*8," 68,-$ G P@3 Q6-@4 Z  [ 6- d@7 "}e6-AP n)"@Q)"@S%6-AW) o"@0 p x)@Q*@S%6-AV) "}y=-"@)"@)"@)"@196-Ah= z"@86-Ai {"@@6-Ap "}|"@4AGq}3/"@ )+@*@A,)"@F3 ~ )"@Q)"@S%6-AX) "} )"@Q)"@S%6-AY)  $  @Q)!@S)8,$ "@Q6-@R 6"}-Ab "@R6-@1 "@0Ap  @Q)!@S 6-AV T"}"@S*8,""(}WHERE?, A1A4GAP)4IN GAPP68,-@QT  "@(AG` AI " }"@(AG@ AI'#"@0)"@1)"@4' "@86-Ad  @4"!}  (}HOW?$)"@9)"@A%6-Ae) @4 16-@%8@,")8,"16-A""}f % 8,"68,-!6-Ag%  '#"@0)"@R)"@S' "@Q6-AU "#} 6-@ 6-  6-& " 6- , 6- 6 8,  7 @  A"$} J "6- K T 6- pINITIALISEuO6-@6-%6-%'6-%/6-%76-%?6-%G"%}6-%O6-%v; 6-%6-%6-%#6-%+6-%36-%;6-%s6-Ac6-A +6-A76-AB2"&}C6-A@O6-AAs[6-AASg6-APs6-Ae6.D:ADVEN6-@)6-@56-@A-AAq"'}M6-AcY6-Be6-B V!A@d!A 6-C:,6-@ @ D:ADVEN."(}INDO 6. 67A,. +67@,.46-C:,O6-?:<@<<A, 6-F:AV,6-$@")}6-@#$ A  @ D:ADVEN.TXT{/6-P:+F:AB,&@ ,'@,$@X@@"*} D:ADVEN.FNT{6-?:<@<$AV<A$,@''6-F:AD,%AV$F:AE,%6-$AV&"+}) A(6-$AV)6-A( 6-6- -@'68,- $'68@,-@P'68,-A",}. 6-6-6- XSPECIAL MOVESb 8,"6-@& c6-@ l#8,")8,"6-@"-}# m@6-@%8@,")8,"468@,-@6-@9n v"8@,"6-@@" w6-A7".} + 8,"68@#,-'6-@7+ 6-A8 &+8,*8,,)8,""6-& 6-@ #"/}8,"*8,"6-@ # $6-A@8,"$6-A9 -6-@3)68@,-&8@,- ""0}8@ ,!6-@" 98@ ,!56.THE FRESH AIR SOBERS YOU UP.9 68@ ,-$" -8,"1} " Ap Ap( -8, $6-@Q( 6-@ B8@", 268@",-8@""2},%@>6-AAB 6-@  AE`)8,)8@$,"%6-) 6-@ $"3}6-@38@%,"$6- @COMMAND TABLE!##ATTDRA,75,ALT,69,APPPOT,24,,0!NNBUYSWO,63,BUYBEE,93,BUYALE,"4}93,BUYWIN,55,BON,58,BOO,107,BEE,108,BUC,81,,0!jjCLIROP,28,CLITRE,30,CLIPIT,56,CALIRI,72,CALDUR,62,CALDRA,112,CLIWEL,118,CU"5}TROP,119,CUTKNO,119,CAS,16!00CUR,31,CLIWAL,129,CHADRI,140,CLIROC,144,,0!iiD,6,DOW,6,DRIPOT,23,DROROP,27,DROSIL,45,DROWO"6}O,44,DROPOT,46,DROGOL,47,DROHAT,48,DROKEY,49,DROSTO,50!ggDROSWO,51,DROSHI,52,DROPEN,53,DROBOO,54,DRIBEE,95,DRIALE,95,DROCO"7}I,47,DUR,66,DOO,99,DWA,66,DRA,74!::DROBEE,136,DROMUG,136,DIA,32,DIRON,141,DIROFF,142,,0!((E,3,EAS,3,ENTCAS,120,ENTCAV,1"8}21,,0!FIGDRA,75,FINDRA,112,,0"iiGETSIL,17,GETROP,18,GATWOO,20,GIVWOO,21,GETGOL,36,GETHAT,37,GETKEY,38,GETSTO,39,GETSW"9}O,40,GETSHI,41"jjGETPEN,42,GETBOO,43,GETWOO,20,GETROC,13,GIVPEN,89,GIVHAT,82,GETFLI,39,GETALL,7,GIVBEE,109,GIVTIP,110"MM":}GETTOA,116,GOL,103,GUA,78,GAT,123,GAP,125,GO GAP,125,GO SHR,128,GAR,137 "==GO NOR,1,GO SOU,2,GO EAS,3,GO WES,4,GO UP,5,GO ";}DOW,6,,0"H,111,HEL,111,HAT,101,,0"..I,34,INV,34,INN,79,IRI,132,INIDIS,145,,0$"22JUMCHA,86,JUMPIT,56,JUMWEL,118,JUMW"<}AL,127,,0."++KILDRA,75,KEY,102,KIN,90,KILIRI,75,,08"eeL,100,LOO,100,LISSKU,60,LIGFIR,61,LIGWOO,61,LEACHA,86,LISDOO,87,LEA"=}PIT,56,LISTOA,115,LEAWEL,1189"LISVOI,122B"$$MAN,98,MAKFIR,61,MAKWIS,134,,0M"$$N,1,NOR,1,NES,35,NO INI,146,,0W"''OPE">}DOO,57,OPESAF,33,OPEGAT,126,,0`"^^PEN,106,PRI,91,PAI,81,POS,77,PIT,12,POT,22,PUSSHI,130,PUTSHI,130,PRION,138,PRIOFF,139,,0"?}j"Q,29,QUI,29,,0t"==RUBPOT,24,RESGAM,97,ROC,13,ROP,14,REASIG,8,REAPOS,77,,0~"mmS,2,SOU,2,SEEKIN,9,SAYDUR,62,SAYIRI,72,"@}SAVGAM,96,SAYDRA,112,SPADRA,85,SPAIRI,85,SWISTR,117,SIG,8,SKU,59"DDSWO,64,STR,67,STO,68,SHI,70,SHR,71,SAF,32,SIL,104,SPAIR"A}I,85,,0"jjTALWOM,25,TIEROP,26,THRROP,27,TALDWA,65,TALDRA,76,TALKIN,88,TALMAN,94,TALPRI,92,TALWIZ,84,TIPMAN,110"ffTEXON,"B}113,TEXOFF,114,THRPOT,46,TALDUR,65,THRGOL,47,THRCOI,47,TRE,15,TOA,73,TALIRI,131,TALGUA,135"TURDIA,33,,0"//U,5,UP,5,UN"C}TROP,19,UNLDOO,57,UNTKNO,19,,0"TTW,4,WES,4,WEABOO,10,WIZ,83,WOM,11,WOO,105,WEL,80,WAL,124,WIN,133,WEAHAT,143,,0'#,0(#"D}INVENTORY)#SILVER PIECES ( ).*#A LONG ROPE.+#A FEW PIECES OF WOOD.,#A MAGIC POTION.-#GOLD PIECES ( "E}).#A WIZARD'S HAT./#A STEEL KEY.0#A SMALL STONE.1#A SWORD.2#(THE SWORD IS ENCHANTED)3#A CHARMED SHIEL"F}D.4#A JEWELLED PENDANT.5#A PAIR OF MAGIC BOOTS.6#A MUG OF BEER.=#A ROPE IS TIED TO A ROCK.>#A ROPE GOES I"G}NTO THE PIT.?#!!A ROPE GOES OUT OF THE PIT.%WHICH GAME&%U (}.(PLEASE PUT SAVE DISK IN DRIVE D(AND PRESS "H}N A2U(}0% " AP:% " AD%O'(PLEASE ENTER GAME NUMBER (0-9)1 A2?20)39E("I}O A@N%) 6.67,. 67,..GBU&")$X%# 6.67,. 67<,.=:,#$%SAVE GAME%J A A0"J}(@J(}GAME  ALREADY EXISTS.%4(REPLY Y TO DELETE$ A240YA@%n A@@"K})@6*@D-@'M6-8,Z*@^ n(@8,%@ %X "(}8"L}($PLEASE PUT ΠԠ IN DRIVE 1N(AND PRESS X A2% %RESTORE GAME%8 6-% A6-&"M}' A08@%Y)@-@'+)@468,-8 E@N68,-Y@%-""N}@A#6. D:ADVEN26.SCR- A%-"@(#6. D:ADVEN15.SCR- A%@#"@)"@)"@66. D:"O}ADVEN8.SCR@ A% A@&T (}GAME  NOT FOUND.:(ENTER Y TO TRY AGAIND A2T0YA@ &"P}@ AH&DIRECTORYR&%6. D :ADVEN*.GBU%67<,.=:,\& A@@f&@  A0"Q}p& @$z& FORMAT&S(%(REPLY Y TO FORMAT THE DISK6( ON DRIVE @ A2G(}S6-& "R}0Y$&" 6.D67,.=:,"67,.:&AT@$& ERROR&O/('}PLEASE PUT ΠԠ IN D"S}RIVE 1E(AND PRESS O A2& A0@& A@@&67<,.  & @"T} D:ADVEN.TXT& D2:AUTORUN.BASBUFLEUU9PRTSUUU1PRTXUUU1UU9U9U1SADUURRSAVGSTAADPARS +0 FE ##CONVERT ATARIWRITER+ TO ANTICd;@,;@,n&V}6.D1:ADVENDOC.000x-@@ 6.=:,6-@&B:,-67@<@,.1-67<@,.2 &W}@@2( CONVERTING 67@<@,.2* @@* A3)@&X}@)*@3 A?6-@*@(6-@ 5*@? A@@&Y} D:ANTICADV.BAS ##CONVERT ATARIWRITER+ TO ANTICd;@,;@,n$% the Tail routines, PARSE, INPSTR, GPBYTE and SCRLD within a cunningly contrived Basic program you can write an adventure qui*[}te quickly, that can be favorably compared to any all-machine-code adventure, both in size and speed. I compared DQ to the gr*\}aphic adventures ADVENTURELAND by AI and WIZARD and the PRINCESS by Sierra On-Line. DQ has more rooms and a larger vocabulary*]} than ADVENTURELAND and the room changes are faster than either of them. Wizard was slightly bigger than DQ but it used both *^}sides of the disk. This is not meant as a slur on these adventures in any way. If you havn't played them yet, then I recommen*_}d them. I enjoyed them both a lot. They are a lot of fun.d into a command number, you still have to get to the routine that (:`     #  T 6  y    .  x  2   "     0   o  O     .  x  2   "     0   o  O       .  x  2   "     0   o  O       .  x  2   "     0   o  O       .  x  2   "     0   o  O       .  x  2   "     0     o    O        .    x   2       0      r       /  0      x   o2      .    x    2           0     r  !   "   # / $ 0!  % "  &  ' oD $ T( % # ) ) & # * /' % + 0( % , 1% - 2* # . - + # / o, * 0 2* 1 3. # 2 / # 3 0 # 4 .1 # 5 # 6 .4 3 7 ^2 8 o: 5 9 4 : o7  ; 8  <  = > WF ; ? : @ o=  A >  B ?  C IA @ D ? E 1B  F !C  G  H &P E TI D J R G K F L oI  M J  N K  O IM L P K Q 1N  R !O  S  T &\ Q TU P V ^ S W R X oU  Y V  Z W  [ IY X \ W ] 1Z  ^ ![  _  ` &h ] Ta \ b j _ c b^ d oa  e b  f c  g Ie d h c i 1f  j !g  k  l &t i Tm h n  k o 'j p om  q n  r o  s Iq p t o u 1r  v !s  w  x &v u Ty Ut z { w T{ v | y  } z x ~ Oy  } | T {  ~ T }   T    T    T n    T   m  0 S   m  0 S       m  0 S    m  0 S   m  0 S      m  0 S     m  0 S         ~            ~          V  ~            . x 6  x 6 L kMg S  q  .       . x 2  x 2 "   . x 2   T    T    T  >           q  O    c    >      b  u     E  ^  l    =  g  {    J W    9   R s        >       z   z   _ }       ! " #  $ P%6!T& '# ()$ )%#*o&#+.'#,x(&-2'.* /",2 0.c1- 2/3 31c4T0 5 ?4 6c75*8.8-9.;0:.6*;x75<26=9->x:8?29@<0Ax=;B2<C D4@A FE E!B?G.C?HxDBI2CJFG K5s L IEM.JENxKIO2JPXQOgSWRM T\QgU1QV3WZM X^`TYSZ[3P \ 44dY^k_K3[M `^\Za][b#[c=_Zd^ Oaew4b`fcag:daheaifaj$gak haliamg  ,*lonqj'ospt2qurvCRvt xusyoszw {1xv|ov}zT*{y*|y*}y*~y~y*y o oTy0Sm*T** oT:&  oRT&=0SmO{wB@DDwABGDgCBDABBD\*p#) COD BDBD{BDB%kB(O?OO %x`0 3 h ABDqCA D $DDB"DB#DQB$D#oBpBC#qBKrB"DBDCBD3BDCC1DX A DBCD1BDBD2^fed%c2a%`%, MM# B=D%]1~DBD BC3D*BDC6D| 0| 0~X$-D*0 !  wO |&6+0 +; o +"N9A.Gi+O !f "##!$>+%R#&-0C!%(-#" )=!*`%$ +?#,a'& -A%.b)( /C'0c+* 1E)2d-, 3H+4e/. 5J-6f10 7L/8g32 9N1:h54 ;P3<i76 =5>q98 ?C7=Cs;: A9Bt< C;v"E@+F$GB+H&ID+J(KI+L*M)NOW,PK+Q.RM+S0TO+U2VQ+W4X+YS#rTR[US\VS]WS^XS_YS`ZSa[Sb\Sc]Sd^Se_Sf`SgaShbSicSjdSkeSlfSmgSnhSoiSpjSqkSrlSsmStnSuoSvpSwqSxSysRztr{ur|vr}wr~xryrzr{r|r}r~rrrrrrrrRR|%fghiZ ~ * .(   $ CRDSD ,:8s+-+#%{0++ 6 <  /8<++++ +: !$"%#W% &'(DTD+-o/<o12#3'o45C6o7(8o91:=%>?$@A%B:C:D%EFGWHuIJ6BKL M#N! OPPQ2t:FB%DDnB#BB.BTlBU5-t#DAD8MjBC7DDB;DAD  5   5 P 55. r  % #pq t# js uv.w`x!y"z#{$"|"}